package com.yxh.www.author.api;

import com.yxh.www.author.domain.SmResource;
import com.yxh.www.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 授权中心 - 系统资源API集
 * </p>
 *
 * @author yangxiaohui
 * @since 2020/5/12
 */
@FeignClient(value = "author-server", contextId = "authorSmResource")
public interface AuthorSmResourceApi {
    /**
     * 新增系统资源信息
     *
     * @param resourceTitle 资源标题    必填
     * @param resourceIcon  资源图标    非必填
     * @param resourcePath  资源路径    非必填
     * @param parentId      父级ID    非必填 默认 0：根目录
     * @param permissionKey 权限标识    非必填
     * @param resourceType  资源（0：目录；1：菜单；2：按钮）  必填
     * @return 统一响应 {@link Result}
     */
    @PostMapping("/smResource/addSmResource")
    Result<Object> addSmResource(@RequestParam String resourceTitle,
                                 @RequestParam(required = false) String resourceIcon,
                                 @RequestParam(required = false) String resourcePath,
                                 @RequestParam(defaultValue = "0") String parentId,
                                 @RequestParam(required = false) String permissionKey,
                                 @RequestParam String resourceType);

    /**
     * 修改系统资源
     *
     * @param id             系统资源ID 必填
     * @param resourceTitle  资源标题   非必填
     * @param resourceIcon   资源图标   非必填
     * @param resourcePath   资源路径   非必填
     * @param permissionKey  权限标识   非必填
     * @param resourceStatus 资源状态（0：正常；1：失效）    非必填
     * @param orderNumber    排序编号   非必填
     * @return 统一响应 {@link Result}
     */
    @PutMapping("/smResource/modifySmResource")
    Result<Object> modifySmResource(@RequestParam String id,
                                    @RequestParam(required = false) String resourceTitle,
                                    @RequestParam(required = false) String resourceIcon,
                                    @RequestParam(required = false) String resourcePath,
                                    @RequestParam(required = false) String permissionKey,
                                    @RequestParam(required = false) String resourceStatus,
                                    @RequestParam(required = false) Integer orderNumber);

    /**
     * 根据ID删除系统资源
     * @param ids   资源ID集合
     * @return  统一响应 {@link Result}
     */
    @DeleteMapping("/smResource/removeSmResource")
    Result<Object> removeSmResource(@RequestParam String[] ids);

    /**
     * 查询系统资源列表
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @return 统一响应 {@link Result<List>} 实体 {@link SmResource}
     */
    @GetMapping("/smResource/listSmResource")
    Result<List<SmResource>> listSmResource(@RequestParam(required = false) String resourceTitle,
                                            @RequestParam(required = false) String resourcePath);

    /**
     *  分页查询系统资源列表
     * @param resourceTitle 资源标题 模糊查询
     * @param resourcePath  资源路径 模糊查询
     * @param pageNum  页码          默认值 1
     * @param pageSize 页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    @GetMapping("/smResource/pageSmResource")
    Result<Object> pageSmResource(@RequestParam(required = false) String resourceTitle,
                                  @RequestParam(required = false) String resourcePath,
                                  @RequestParam(defaultValue = "1") Long pageNum,
                                  @RequestParam(defaultValue = "20") Long pageSize);

}
